package com.redepronik.negosys.invfac.entity;

import java.io.Serializable;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

/**
 * The persistent class for the tipopago database table.
 * 
 */
@Entity
@Table(schema = "invfac", name = "tipopago")
@NamedQuery(name = "Tipopago.findAll", query = "SELECT t FROM Tipopago t")
public class Tipopago implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@SequenceGenerator(allocationSize = 1, name = "TIPOPAGO_TIPOPAGOID_GENERATOR", sequenceName = "INVFAC.TIPOPAGO_TIPOPAGOID_SEQ")
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "TIPOPAGO_TIPOPAGOID_GENERATOR")
	@Column(unique = true, nullable = false)
	private Integer tipopagoid;

	@Column(nullable = false, length = 50)
	private String nombre;

	// bi-directional many-to-one association to Cuotaingreso
	@OneToMany(orphanRemoval = true, cascade = CascadeType.ALL, mappedBy = "tipopago")
	private List<Cuotaingreso> cuotaingresos;

	// bi-directional many-to-one association to Pagocredito
	@OneToMany(orphanRemoval = true, cascade = CascadeType.ALL, mappedBy = "tipopago")
	private List<Pagocredito> pagocreditos;

	// bi-directional many-to-one association to Pagoentrada
	@OneToMany(orphanRemoval = true, cascade = CascadeType.ALL, mappedBy = "tipopago")
	private List<Pagoentrada> pagoentradas;

	public Tipopago() {
	}

	public Cuotaingreso addCuotaingreso(Cuotaingreso cuotaingreso) {
		getCuotaingresos().add(cuotaingreso);
		cuotaingreso.setTipopago(this);

		return cuotaingreso;
	}

	public Pagocredito addPagocredito(Pagocredito pagocredito) {
		getPagocreditos().add(pagocredito);
		pagocredito.setTipopago(this);

		return pagocredito;
	}

	public Pagoentrada addPagoentrada(Pagoentrada pagoentrada) {
		getPagoentradas().add(pagoentrada);
		pagoentrada.setTipopago(this);

		return pagoentrada;
	}

	public List<Cuotaingreso> getCuotaingresos() {
		return this.cuotaingresos;
	}

	public String getNombre() {
		return this.nombre;
	}

	public List<Pagocredito> getPagocreditos() {
		return this.pagocreditos;
	}

	public List<Pagoentrada> getPagoentradas() {
		return this.pagoentradas;
	}

	public Integer getTipopagoid() {
		return this.tipopagoid;
	}

	public Cuotaingreso removeCuotaingreso(Cuotaingreso cuotaingreso) {
		getCuotaingresos().remove(cuotaingreso);
		cuotaingreso.setTipopago(null);

		return cuotaingreso;
	}

	public Pagocredito removePagocredito(Pagocredito pagocredito) {
		getPagocreditos().remove(pagocredito);
		pagocredito.setTipopago(null);

		return pagocredito;
	}

	public Pagoentrada removePagoentrada(Pagoentrada pagoentrada) {
		getPagoentradas().remove(pagoentrada);
		pagoentrada.setTipopago(null);

		return pagoentrada;
	}

	public void setCuotaingresos(List<Cuotaingreso> cuotaingresos) {
		this.cuotaingresos = cuotaingresos;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public void setPagocreditos(List<Pagocredito> pagocreditos) {
		this.pagocreditos = pagocreditos;
	}

	public void setPagoentradas(List<Pagoentrada> pagoentradas) {
		this.pagoentradas = pagoentradas;
	}

	public void setTipopagoid(Integer tipopagoid) {
		this.tipopagoid = tipopagoid;
	}

}